package ar.com.tallerdos.smartdinner.sync;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import android.content.SharedPreferences;
import android.util.Log;
import ar.com.tallerdos.smartdinner.business.PedidoBusiness;
import ar.com.tallerdos.smartdinner.model.Pedido;
import ar.com.tallerdos.smartdinner.util.MyApplication;
import ar.com.tallerdos.smartdinner.util.PedidoActualizacionData;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

public class PedidosSincronizador extends BaseAsyncTask {

    private static final String PEDIDO_NOVEDADES_SERVICE = "pedidoDetalleNovedades.php";

    @Override
    protected Integer doInBackground(Void... params) {
	Log.e("log_tag", "Inicio Proceso de Novedades de Pedido");

	SharedPreferences settings = MyApplication.getAppContext()
		.getSharedPreferences("config",
			android.content.Context.MODE_PRIVATE);
	long miliseconds = settings.getLong("ultimaActualizacion", 0);
	Date horaUltimoChequeo = new Date(miliseconds);
	Date horaChequeoActual = new Date();

	SharedPreferences.Editor editor = settings.edit();
	editor.putLong("ultimaActualizacion", horaChequeoActual.getTime());
	editor.commit();

	String response = llamarWebService(SERVER_URL
		+ "/"
		+ PEDIDO_NOVEDADES_SERVICE
		+ "?fecha_desde="
		+ new SimpleDateFormat("yyyy-MM-dd%20HH:mm:ss").format(horaUltimoChequeo));

	List<PedidoActualizacionData> pedidosAActualizar = parsearJson(response);

	if (pedidosAActualizar != null && pedidosAActualizar.size() > 0) {
	    for (PedidoActualizacionData pData : pedidosAActualizar) {
    		Pedido pedido = PedidoBusiness.findPedidoByCodigo(pData.getId());
		pedido.setEstado(pData.getEstado());
		PedidoBusiness.update(pedido);
	    }
	} else {
	    Log.e("log_tag", "Novedades de Pedido - Sin novedades");
	}

	Log.e("log_tag", "Fin Proceso de Novedades de Pedido");
	return null;
    }

    private List<PedidoActualizacionData> parsearJson(String response) {
	response = response.replace("pedido_id", "id");
	Gson gson = new GsonBuilder().create();

	List<PedidoActualizacionData> pedidos = gson.fromJson(response,
		new TypeToken<List<PedidoActualizacionData>>() {
		}.getType());

	return pedidos;
    }

}
